package com.xujl.mvcbind.ui.main.model;

import com.xujl.fastlib.base.BaseModel;
import com.xujl.fastlib.base.IControl;
import com.xujl.fastlib.consts.RouterApi;
import com.xujl.fastlib.utils.StringUtils;
import com.xujl.mvcbind.bean.MainBean;
import com.xujl.mvcbind.ui.custom.control.ClickAnimFragmentControl;
import com.xujl.mvcbind.ui.custom.control.CustomAttrFragmentControl;
import com.xujl.mvcbind.ui.custom.control.CustomEventFragmentControl;
import com.xujl.mvcbind.ui.db.control.OverTimeFragmentControl;
import com.xujl.mvcbind.ui.element.control.ElementTestOneFragmentControl;
import com.xujl.mvcbind.ui.element.control.ElementTestTwoFragmentControl;
import com.xujl.mvcbind.ui.form.control.UserInfoFragmentControl;
import com.xujl.mvcbind.ui.home.control.ComplexFragmentControl;
import com.xujl.mvcbind.ui.list.control.GridListFragmentControl;
import com.xujl.mvcbind.ui.list.control.ListFragmentControl;
import com.xujl.mvcbind.ui.list.control.NestedScrollFragmentControl;
import com.xujl.mvcbind.ui.list.control.TabListFragmentControl;
import com.xujl.mvcbind.ui.loading.control.LoadingFragmentControl;
import com.xujl.mvcbind.ui.loading.control.SplicingFragmentControl;
import com.xujl.mvcbind.ui.mode.control.ActivityModeFragmentControl;
import com.xujl.mvcbind.ui.mode.control.NoBindingFragmentControl;
import com.xujl.mvcbind.ui.mode.control.SimpleModeFragmentControl;
import com.xujl.mvcbind.ui.permission.control.PermissionRequestFragmentControl;
import com.xujl.mvcbind.ui.refresh.control.RefreshWebFragmentControl;
import com.xujl.mvcbind.ui.statusbar.control.NormalStatusBarFragmentControl;

import java.util.ArrayList;
import java.util.List;

import androidx.databinding.ObservableField;


/**
 * <pre>
 *     author : xujl
 *     e-mail : 597355068@qq.com
 *     time   : 2019/08/20
 *     desc   :
 *     version: 1.0
 * </pre>
 */

public class MainFragmentModel extends BaseModel {
    public ObservableField<String> keyword = new ObservableField<>();
    private List<MainBean> mMainBeanList = new ArrayList<>();

    @Override
    public void init (IControl control) {
        MainBean bean0 = new MainBean("数据库");
        bean0.addChild(new MainBean("加班记录", OverTimeFragmentControl.class));
        mMainBeanList.add(bean0);
//======================================================================================================================
        MainBean bean1 = new MainBean("列表");
        mMainBeanList.add(bean1);
        bean1.addChild(new MainBean("普通列表", ListFragmentControl.class));
        bean1.addChild(new MainBean("网格列表", GridListFragmentControl.class));
        bean1.addChild(new MainBean("Tab切换列表", TabListFragmentControl.class));
        bean1.addChild(new MainBean("嵌套滚动列表", NestedScrollFragmentControl.class));
//======================================================================================================================
        MainBean bean2 = new MainBean("表单");
        mMainBeanList.add(bean2);
        bean2.addChild(new MainBean("用户信息", UserInfoFragmentControl.class));
//======================================================================================================================
        MainBean bean3 = new MainBean("事件/自定义属性");
        mMainBeanList.add(bean3);
        bean3.addChild(new MainBean("自定义属性", CustomAttrFragmentControl.class));
        bean3.addChild(new MainBean("事件", CustomEventFragmentControl.class));
        bean3.addChild(new MainBean("点击效果", ClickAnimFragmentControl.class));
//======================================================================================================================
        MainBean bean4 = new MainBean("导航/状态栏");
        mMainBeanList.add(bean4);
        bean4.addChild(new MainBean("普通导航栏", NormalStatusBarFragmentControl.class));
//======================================================================================================================
        MainBean bean5 = new MainBean("刷新相关");
        mMainBeanList.add(bean5);
        bean5.addChild(new MainBean("带刷新的网页", RefreshWebFragmentControl.class));
//======================================================================================================================
        MainBean bean6 = new MainBean("动态权限");
        bean6.addChild(new MainBean("动态权限", PermissionRequestFragmentControl.class));
        mMainBeanList.add(bean6);
        //======================================================================================================================
        MainBean bean7 = new MainBean("相机");
        bean7.addChild(new MainBean("二维码扫描").setActivityApi(RouterApi.QR_CODE));
        mMainBeanList.add(bean7);
        //======================================================================================================================
        MainBean bean8 = new MainBean("加载/多状态布局");
        bean8.addChild(new MainBean("加载/多状态布局", LoadingFragmentControl.class));
        bean8.addChild(new MainBean("碎片化拼接布局", SplicingFragmentControl.class));
        bean8.addChild(new MainBean("元素组合架构示例1", ElementTestOneFragmentControl.class));
        bean8.addChild(new MainBean("元素组合架构示例2", ElementTestTwoFragmentControl.class));
        bean8.addChild(new MainBean("复杂类型首页示例", ComplexFragmentControl.class));
        mMainBeanList.add(bean8);
        //======================================================================================================================
        MainBean bean9 = new MainBean("多模式");
        bean9.addChild(new MainBean("只写control类", ActivityModeFragmentControl.class));
        bean9.addChild(new MainBean("不使用binding", NoBindingFragmentControl.class));
        bean9.addChild(new MainBean("不使用binding与mvc", SimpleModeFragmentControl.class));
        mMainBeanList.add(bean9);
//======================================================================================================================
//        MainBean bean8 = new MainBean("其他");
//        bean8.addChild(new MainBean("热修复测试", HotFixFragmentControl.class));
//        mMainBeanList.add(bean8);
    }

    public List<MainBean> getDataList () {
        return mMainBeanList;
    }

    public int getKeywordPosition () {
        if (StringUtils.isEmpty(keyword.get())) {
            return 0;
        }
        String s = keyword.get();
        for (int i = 0; i < mMainBeanList.size(); i++) {
            if (StringUtils.equals(mMainBeanList.get(i).getName(), s)) {
                return i;
            }
        }
        return 0;
    }
}
